非球形颗粒生成
入口为【颗粒模块 → 非球形颗粒/结构】。按物理作用选择自由颗粒、固定运动颗粒或边界颗粒,不把形状相同当作运动约束相同。
操作步骤
- 把 STL 和需要的 TXT 放入输入目录,选择对应插入类型。
- 填写中心、缩放、姿态、密度与属性组;核对 STL 原始单位。
- 使用阵列时检查数量与间距,文件导入时核对文件中的编号和属性组。
- 在模型预览用轴向视图和测量检查实际尺寸,查看它与流体、壁面和其它颗粒的相对位置。
- 保存并查看初始化输出,确认物体没有非预期穿透或大幅跳动。
TXT 导入
在自由颗粒、固定运动颗粒或边界颗粒对应的插入项中选择【文件导入】,填写带 .txt 后缀的文件名。TXT 放在算例根目录,与 ModelInfo.json 同级,不填写绝对路径或子目录;示例引用的 STL 也需随算例一起提供。STL 文件名不要包含空格,否则会被拆成多列。
通用规则
第 1 行为 TFluid_DEM_input,第 2 行为颗粒总数 N,从第 3 行起每行一颗粒,共 N 条记录。各列用空格或 Tab 分隔,不添加列名或行内注释。三维向量均按 X、Y、Z 排列,无运动时也要保留对应的三个 0。
| 插入类型 | 每条记录列数 | 区别 |
|---|---|---|
| 自由颗粒 | 20 | 包含 STL、形状组、属性组、缩放、密度、位移和四组三维运动量 |
| 固定运动颗粒 | 21 | 在 STL 文件名后多一列耦合模式 |
| 边界颗粒 | 20 | 列布局与自由颗粒一致,按边界颗粒用途读取 |
三种类型都要保留密度列。旧版固定运动和边界颗粒的文字示例漏列了密度;本章已补齐。自由与固定运动示例取自 2.2.0 算例包的 FSI-02-Ellipsoid-Collision-FileInput,边界示例按相应列布局编写。
自由颗粒
| 列号 | 内容 | 单位/说明 |
|---|---|---|
| 1 | STL 文件名 | 如 ellipsoid_0p4.stl |
| 2 | 形状组编号 | 从 0 开始,标识几何形状 |
| 3 | 属性组编号 | 从 0 开始,须存在对应材料属性组 |
| 4 | 缩放比例 | 无量纲,必须为正数 |
| 5 | 密度 | kg/m³ |
| 6–8 | 整体位移 X、Y、Z | m,结合 STL 原始坐标检查实际位置 |
| 9–11 | 耦合阶段初始速度 X、Y、Z | m/s |
| 12–14 | 耦合阶段初始角速度 X、Y、Z | rad/s |
| 15–17 | 初始化阶段初始速度 X、Y、Z | m/s |
| 18–20 | 初始化阶段初始角速度 X、Y、Z | rad/s |
STL_free_list.txt 完整示例,共 2 颗自由颗粒:
TFluid_DEM_input
2
ellipsoid_0p4.stl 0 0 1.0 1200 0.05 0.05 0.12 0.0 0.0 -0.1 0.0 0.0 0.0 0.0 0.0 -0.1 0.0 0.0 0.0
ellipsoid_0p4.stl 1 1 1.0 1200 0.05 0.06 0.11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
这里的形状组分别为 0、1,属性组也分别为 0、1。复制数据时需同时提供相应 STL 和属性配置,不能只把 TXT 文件名填入一个空算例。
固定运动颗粒
| 列号 | 内容 | 单位/说明 |
|---|---|---|
| 1 | STL 文件名 | 如 ellipsoid_0p4.stl |
| 2 | 耦合模式 | 0:静态;1:动态 |
| 3 | 形状组编号 | 从 0 开始 |
| 4 | 属性组编号 | 从 0 开始 |
| 5 | 缩放比例 | 无量纲,必须为正数 |
| 6 | 密度 | kg/m³,不能省略 |
| 7–9 | 整体位移 X、Y、Z | m |
| 10–12 | 耦合阶段初始速度 X、Y、Z | m/s |
| 13–15 | 耦合阶段初始角速度 X、Y、Z | rad/s |
| 16–18 | 初始化阶段初始速度 X、Y、Z | m/s |
| 19–21 | 初始化阶段初始角速度 X、Y、Z | rad/s |
STL_fixed_list.txt 完整示例,共 1 颗固定运动颗粒:
TFluid_DEM_input
1
ellipsoid_0p4.stl 1 2 2 5.0 1200 0.05 0.08 0.05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
该记录的耦合模式为 1,形状组和属性组均为 2,缩放为 5.0,密度为 1200 kg/m³。耦合模式是独立一列,不能与形状组编号混用;预设运动的设置见非球形颗粒设置。
边界颗粒
边界颗粒每条记录为 20 列,没有耦合模式列;各列含义与上方自由颗粒表一致,仍保留密度及四组三维运动量。它作为颗粒碰撞边界使用,不参与 CFD 耦合;运动与边界设置按实际工况核对。
以下是将上方固定运动记录去掉耦合模式列后的 STL_boundary_list.txt 格式示例,共 1 颗边界颗粒:
TFluid_DEM_input
1
ellipsoid_0p4.stl 2 2 5.0 1200 0.05 0.08 0.05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
TXT 输出
非球形颗粒输出 TXT 在每条记录末尾保存 1 个姿态四元数,共 4 列,顺序固定为 w, x, y, z。w 为标量分量,x、y、z 为向量分量,均无量纲;读写时保持这个顺序。
文件结构
可再次导入的初始化输出文件使用以下结构:
- 第 1 行:
TFluid_DEM_initial_output。 - 第 2 行:颗粒总数
N。 - 第 3 行起:每行一条颗粒记录,共
N条。前面的字段沿用对应颗粒类型的布局,最后追加四元数四列。
| 颗粒类型 | 每条记录总列数 | 四元数列号 | 顺序 |
|---|---|---|---|
| 自由颗粒 | 24 | 21–24 | w, x, y, z |
| 固定运动颗粒 | 25 | 22–25 | w, x, y, z |
| 边界颗粒 | 24 | 21–24 | w, x, y, z |
固定运动颗粒在 STL 文件名后多一列耦合模式,因此四元数位置也向后移一列。
完整示例
以下文件包含 1 颗自由颗粒,数据行共 24 列,保留完整输出精度:
TFluid_DEM_initial_output
1
boulder_8.stl 1 0 5.000000 2650.000000 48.49806999676661 148.03887107145124 109.71657613911981 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.00000000000000 0.91325730551229 -0.31892437695854 -0.22330718320511 0.11992596731751
该记录的各列含义如下。作为文件导入复用时,速度列对应前文各阶段的初始运动字段。
| 列号 | 字段 | 说明/单位 |
|---|---|---|
| 1 | STL 文件名 | boulder_8.stl |
| 2 | 形状组编号 | 1 |
| 3 | 属性组编号 | 0 |
| 4 | 缩放比例 | 5.000000,无量纲 |
| 5 | 密度 | 2650.000000 kg/m³ |
| 6–8 | 整体位移 X、Y、Z | m |
| 9–11 | 耦合阶段速度 X、Y、Z | m/s |
| 12–14 | 耦合阶段角速度 X、Y、Z | rad/s |
| 15–17 | 初始化阶段速度 X、Y、Z | m/s |
| 18–20 | 初始化阶段角速度 X、Y、Z | rad/s |
| 21 | 四元数 w | 0.91325730551229 |
| 22 | 四元数 x | -0.31892437695854 |
| 23 | 四元数 y | -0.22330718320511 |
| 24 | 四元数 z | 0.11992596731751 |
复用输出
保留原始表头、完整记录及末尾四元数,不要仅修改表头把快照改成普通输入。复用文件时还应保留它引用的 STL,核对形状/属性编号及各阶段的速度。续算条件见续算与恢复。
当前模型预览尚不支持边界颗粒 TXT 的几何读取,不能仅因它没有显示就判定文件无效;需结合文件检查与实际计算输出核验。
编号与文件
新版 UI 自动管理普通非球形插入条目的形状编号,通常无需手填;属性组、形状编号与 STL 文件名是不同概念。保存旧配置可能按当前规则更新编号,因此始终保留原始输入副本。TXT 导入应以文件中的映射为准,不靠重命名 STL 修正编号。
预览外部文件修改后,使用刷新入口重新读取。多个对象引用同一个 STL 时,修改源文件可能同时影响它们,应先确认引用关系。